#include <iostream>
#include <queue>
#include <cstring>
using namespace std;
int n,m;
const int N=110;
char a[N][N];
bool st[N][N];
typedef pair<int,int> PII;
int dx[]={1,1,0,-1,-1,-1,0,1};
int dy[]={0,1,1,1,0,-1,-1,-1};
void bfs(int i,int j)
{
	queue<PII> q;
	q.push({i,j});
	while(q.size())
	{
   PII t=q.front();q.pop();
	int e=t.first,r=t.second;	
	for(int k=0;k<8;k++)
	{
		int x=e+dx[k],y=r+dy[k];
		if(x<1||x>n||y<1||y>m||st[x][y]!=false)continue;
      if(a[x][y]=='W')
		{
		st[x][y]=true;
		q.push({x,y});
	   }
	}
  }
}
/*void dfs(int i,int j)
{
	for(int k=0;k<8;k++)
	{
		int x=i+dx[k],y=j+dy[k];
		if(x<1||x>n||y<1||y>m)continue;
		if(a[x][y]=='W'&&st[x][y]==false)
		{
			st[x][y]=true;
		   dfs(x,y);
	   }
	}
}*/
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin>>a[i][j];
		}
	}
	int ret=0;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(a[i][j]=='W'&&st[i][j]==false)
			{
				st[i][j]=true;
				ret++;
				bfs(i,j);
			}
		}
	}
	cout<<ret;
	return 0;
}
